"""
核心功能扩展,着重处理动态参数和接口处理功能
"""
import datetime
import json
import random
from Common.yaml_opertion import YamlOpertion
from Common.log_opertion import logs

class DebugTalk:
    def __init__(self):
        self.yo=YamlOpertion()
        self.logs=logs
    # 1,获取extract.yml中具体某个节点数据
    def get_extract_data(self,key,number=None):
        """
        :param key:
        :param number:
        不指定number返回整个查找到key,如果查找的key是整个列表,就会返回列表否则就是单值
        0:随机取一个列表中的数据
        -1:返回整个列表
        :return:
        """

        extract_data=self.yo.read_yaml(key=key,filename='extract.yml')

        if number !=None and isinstance(extract_data,list):

            # 判断number是否整数
            if not isinstance(number,int):
                number=int(number)
            if number==0:
                random_value=random.choice(extract_data)
                self.logs.info(f'number=0,取到列表值:{random_value},{type(random_value)}')
                return random_value
            elif number==-1:
                list_value = ','.join(extract_data)
                self.logs.info(f'number=-1,取到列表值:{list_value}')
                return list_value
            elif number>0 and number<len(extract_data)+1:
                appoint_value = self.get_number_data(extract_data, number)
                self.logs.info(f'number={number},取到列表值:{appoint_value}')
                return appoint_value
            else:
                self.logs.error('指定的值不在可选范围内!返回空值!')
                return None

        self.logs.info(f'指定查找:{key}值:{extract_data}')

        return extract_data

    # 2.判断是否是需要extract文件数据节点的列表格式中某一个值
    def get_number_data(self,extract_data,number):
        ed_list=list(range(1,len(extract_data)+1))
        if number in ed_list:
            return extract_data[number-1]
    # 3.获取现在时间
    def get_now_date(self):
        now_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        return now_time


if __name__ == '__main__':
    yo=YamlOpertion()
    dt=DebugTalk()
    str="goodlist,0"
    b=str.split(',') if str else ''
    print(b)
    value=getattr(dt, 'get_extract_data')(*b)
    print(value)
    # dt.hot_load(yaml_data)

